<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico"/>
<title>DynamoRIO API: dr_proc.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">DynamoRIO API
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dr__proc_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">dr_proc.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Utility routines for identifying features of the processor.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfeatures__t.html">features_t</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a7d467c1d283fdfa1f2081ba1e0d01b6e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a7d467c1d283fdfa1f2081ba1e0d01b6e">PAGE_SIZE</a>&#160;&#160;&#160;(4*1024)</td></tr>
<tr class="memitem:a8735c19bdcc36b570f3f88f02dbb0548"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a8735c19bdcc36b570f3f88f02dbb0548">FAMILY_LLANO</a>&#160;&#160;&#160;18</td></tr>
<tr class="memitem:a447029fcb9cf7db5014c055d85a3ab36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a447029fcb9cf7db5014c055d85a3ab36">FAMILY_ITANIUM_2_DC</a>&#160;&#160;&#160;17</td></tr>
<tr class="memitem:a1c76ddb17f1e5fbeecd41600cfce0620"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a1c76ddb17f1e5fbeecd41600cfce0620">FAMILY_K8_MOBILE</a>&#160;&#160;&#160;17</td></tr>
<tr class="memitem:a3d1763e4006e8c90d1128f546328dc75"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a3d1763e4006e8c90d1128f546328dc75">FAMILY_ITANIUM_2</a>&#160;&#160;&#160;16</td></tr>
<tr class="memitem:a620e197e51861c4cec393d6df24c756f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a620e197e51861c4cec393d6df24c756f">FAMILY_K8L</a>&#160;&#160;&#160;16</td></tr>
<tr class="memitem:ae7083ecc492e2b0ed2a6dfb2cb6bf3e0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ae7083ecc492e2b0ed2a6dfb2cb6bf3e0">FAMILY_K8</a>&#160;&#160;&#160;15</td></tr>
<tr class="memitem:a0219eb7076bd0c393c4a94507d94ba60"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a0219eb7076bd0c393c4a94507d94ba60">FAMILY_PENTIUM_4</a>&#160;&#160;&#160;15</td></tr>
<tr class="memitem:a13b5374e4e39cbedcdd17fac6242a219"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a13b5374e4e39cbedcdd17fac6242a219">FAMILY_P4</a>&#160;&#160;&#160;15</td></tr>
<tr class="memitem:a2eae48eda2929ebb84a08fc7da4f68df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a2eae48eda2929ebb84a08fc7da4f68df">FAMILY_ITANIUM</a>&#160;&#160;&#160;7</td></tr>
<tr class="memitem:a120e883d78ae7c1ed378a4f9c6830f61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a120e883d78ae7c1ed378a4f9c6830f61">FAMILY_P6</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a407dceb30cc9b5caf2c66ecd10642db7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a407dceb30cc9b5caf2c66ecd10642db7">FAMILY_IVYBRIDGE</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:aa73e3cf0134849d82f5cdcf8d1a63e91"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aa73e3cf0134849d82f5cdcf8d1a63e91">FAMILY_SANDYBRIDGE</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a2d11655bbdfcd1052170395c52eecc84"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a2d11655bbdfcd1052170395c52eecc84">FAMILY_NEHALEM</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:adfa522a590963d43e9729915589fa9f7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#adfa522a590963d43e9729915589fa9f7">FAMILY_CORE_I7</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a657416b67a07e7d5e27ccc34914e37d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a657416b67a07e7d5e27ccc34914e37d0">FAMILY_CORE_2</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:aac707afd85be036938e5d49d95c0eded"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aac707afd85be036938e5d49d95c0eded">FAMILY_CORE</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a819cb0fe5cc685a1569fbad23b6d7b3f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a819cb0fe5cc685a1569fbad23b6d7b3f">FAMILY_PENTIUM_M</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a238acd0c810b58ba86cbb846e55e38bf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a238acd0c810b58ba86cbb846e55e38bf">FAMILY_PENTIUM_3</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a24c7c233d6ac6b23f71718780e011625"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a24c7c233d6ac6b23f71718780e011625">FAMILY_PENTIUM_2</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:aeeab583026ff5b0c5f214487a723a3fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aeeab583026ff5b0c5f214487a723a3fe">FAMILY_PENTIUM_PRO</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a10f1211a030811027398bc93e8e9a77e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a10f1211a030811027398bc93e8e9a77e">FAMILY_ATHLON</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:acb2899a123f67f129d5260aba56f37ed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#acb2899a123f67f129d5260aba56f37ed">FAMILY_K7</a>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:ac25b5877466323d4b3cd304524645539"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ac25b5877466323d4b3cd304524645539">FAMILY_P5</a>&#160;&#160;&#160;5</td></tr>
<tr class="memitem:ad9a459427d0589e528ef5165ecc6daee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ad9a459427d0589e528ef5165ecc6daee">FAMILY_PENTIUM</a>&#160;&#160;&#160;5</td></tr>
<tr class="memitem:a83117177a9a1d41007c3efc9a9e9b1a5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a83117177a9a1d41007c3efc9a9e9b1a5">FAMILY_K6</a>&#160;&#160;&#160;5</td></tr>
<tr class="memitem:af41fba064fdf6c7fb85d91aa707026f6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#af41fba064fdf6c7fb85d91aa707026f6">FAMILY_K5</a>&#160;&#160;&#160;5</td></tr>
<tr class="memitem:aa5917ba4e0fc4881e44bf0d44cc23dbd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aa5917ba4e0fc4881e44bf0d44cc23dbd">FAMILY_486</a>&#160;&#160;&#160;4</td></tr>
<tr class="memitem:ab7516d657fcc533aa29127f613fecfe3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ab7516d657fcc533aa29127f613fecfe3">MODEL_IVYBRIDGE</a>&#160;&#160;&#160;54</td></tr>
<tr class="memitem:a163b71abbe416870d4fa02561e8dccec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a163b71abbe416870d4fa02561e8dccec">MODEL_I7_WESTMERE_EX</a>&#160;&#160;&#160;47</td></tr>
<tr class="memitem:a6e5f23cc20fca8a28a11300b5dfd940e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a6e5f23cc20fca8a28a11300b5dfd940e">MODEL_SANDYBRIDGE_E</a>&#160;&#160;&#160;45</td></tr>
<tr class="memitem:a378c0c39c6c588dfd5056148fb0b579e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a378c0c39c6c588dfd5056148fb0b579e">MODEL_I7_WESTMERE</a>&#160;&#160;&#160;44</td></tr>
<tr class="memitem:ab3ef5a3e21e33d88fce19694b61b899a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ab3ef5a3e21e33d88fce19694b61b899a">MODEL_SANDYBRIDGE</a>&#160;&#160;&#160;42</td></tr>
<tr class="memitem:abe4d780c46eb13e2edd92bbe57c82001"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#abe4d780c46eb13e2edd92bbe57c82001">MODEL_I7_CLARKDALE</a>&#160;&#160;&#160;37</td></tr>
<tr class="memitem:a7b360aad9b73cca85c0f6f37dbe0876b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a7b360aad9b73cca85c0f6f37dbe0876b">MODEL_I7_HAVENDALE</a>&#160;&#160;&#160;31</td></tr>
<tr class="memitem:a3bd47d498a0c8f545e2ea387d623f6ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a3bd47d498a0c8f545e2ea387d623f6ef">MODEL_I7_CLARKSFIELD</a>&#160;&#160;&#160;30</td></tr>
<tr class="memitem:a983414a4d0945b0b8a3978f91b243bbe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a983414a4d0945b0b8a3978f91b243bbe">MODEL_ATOM_CEDARVIEW</a>&#160;&#160;&#160;54</td></tr>
<tr class="memitem:affc7ed655dd90650f983b5e3aadb24e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#affc7ed655dd90650f983b5e3aadb24e5">MODEL_ATOM_LINCROFT</a>&#160;&#160;&#160;38</td></tr>
<tr class="memitem:abf6d19d093958dd07563e007b4a4459c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#abf6d19d093958dd07563e007b4a4459c">MODEL_ATOM</a>&#160;&#160;&#160;28</td></tr>
<tr class="memitem:a273b1b91b5b456da61ece3ed4b277fbc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a273b1b91b5b456da61ece3ed4b277fbc">MODEL_I7_GAINESTOWN</a>&#160;&#160;&#160;26</td></tr>
<tr class="memitem:aa73b987b0cccc2a4a4572c5700acafae"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aa73b987b0cccc2a4a4572c5700acafae">MODEL_CORE_PENRYN</a>&#160;&#160;&#160;23</td></tr>
<tr class="memitem:a6a8b9f446b7cff50bc9ca28928bd5c65"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a6a8b9f446b7cff50bc9ca28928bd5c65">MODEL_CORE_2</a>&#160;&#160;&#160;15</td></tr>
<tr class="memitem:ab20d23ec99677bc5e7353a1b0333c18d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ab20d23ec99677bc5e7353a1b0333c18d">MODEL_CORE</a>&#160;&#160;&#160;14</td></tr>
<tr class="memitem:a558147a77e0781b97100108a9376d279"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a558147a77e0781b97100108a9376d279">MODEL_PENTIUM_M</a>&#160;&#160;&#160;13</td></tr>
<tr class="memitem:aba5cdb3609c3f91a8d0d148b3e3d02ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aba5cdb3609c3f91a8d0d148b3e3d02ce">MODEL_PENTIUM_M_1MB</a>&#160;&#160;&#160;9</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a94798fdadfbf49a7c658ace669a1d310"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a94798fdadfbf49a7c658ace669a1d310a0ff85c91faaad5edc40b8b13bf5872a9">VENDOR_INTEL</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a94798fdadfbf49a7c658ace669a1d310a98f56d8179428f9ae8a673281e490fb7">VENDOR_AMD</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a94798fdadfbf49a7c658ace669a1d310a366adf423d8e0771406dc7be013f0fce">VENDOR_UNKNOWN</a>
<br/>
 }</td></tr>
<tr class="memitem:a5e226019d68bd13050692da392f6c4bf"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bf">feature_bit_t</a> { <br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfac39f532dceb337cb996ebf5a8d658668">FEATURE_FPU</a> =  0, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfac19ecc734bb3fb9988a70cfb9f8b5d23">FEATURE_VME</a> =  1, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa5729b84040f331c80d595fff089eb024">FEATURE_DE</a> =  2, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaf73d7e68dd6037e26fe0f5fd678b37fd">FEATURE_PSE</a> =  3, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa41fba906745913a0024e0681147deaa3">FEATURE_TSC</a> =  4, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaddf84fa80139cfd36bc55fb610f32be2">FEATURE_MSR</a> =  5, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa71c63373c8ea6505295757cc7ecd5675">FEATURE_PAE</a> =  6, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa38b9e9a2545459630c1a24aa942fbf93">FEATURE_MCE</a> =  7, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa62c20d637a5c5c032191d4a508142b10">FEATURE_CX8</a> =  8, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaa7037585fe64ec0dacbd6a0b23e36c83">FEATURE_APIC</a> =  9, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa193e0263a550f30c4e1864fd56031010">FEATURE_SEP</a> =  11, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa9434c675ef6c51a8c1518d21d073bb7d">FEATURE_MTRR</a> =  12, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa60dec431fd3bb9e585ddbedcf0a2ea21">FEATURE_PGE</a> =  13, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfab6d8587790f9538e17f362d90d03c65b">FEATURE_MCA</a> =  14, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa8b10569c2597ca860fe892db8be62de9">FEATURE_CMOV</a> =  15, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa7db7667cc1ffad4f032bde4dc899ee52">FEATURE_PAT</a> =  16, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa616bf1ebc275f7604a4035200dc259d2">FEATURE_PSE_36</a> =  17, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa912609922b9b34a439cf77cb43333f9f">FEATURE_PSN</a> =  18, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfae85e833da45f03369739700842e5e7cf">FEATURE_CLFSH</a> =  19, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa4337609223f777bd83beed05df7f1b81">FEATURE_DS</a> =  21, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa51bceffbc28d5786d54f4c62291c76d7">FEATURE_ACPI</a> =  22, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa47e09e4f1dbd5ed01338dbe4e27b6ba4">FEATURE_MMX</a> =  23, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfadb15d4d526c0ebb7e0d7049592e960a6">FEATURE_FXSR</a> =  24, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa20b36d2b87f95af177c050b421127a4d">FEATURE_SSE</a> =  25, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaf0e79e663a5a2e09109e3ac68ab13319">FEATURE_SSE2</a> =  26, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa852f1d249e7df236d53f4f3038631cb3">FEATURE_SS</a> =  27, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfadde01ed069072cf10e2eb9f3aa15244b">FEATURE_HTT</a> =  28, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa08640c490e267b62a4c308332492340f">FEATURE_TM</a> =  29, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa70edb5ca3595394d0ea5e7d31f7dfb96">FEATURE_IA64</a> =  30, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa8a378efbf47d8405fc3ea2d6b84d1946">FEATURE_PBE</a> =  31, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa94c71e5f616000095f8d92d0dfbe6cb2">FEATURE_SSE3</a> =  0 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfad9464528a260b289e46993186fc96063">FEATURE_PCLMULQDQ</a> =  1 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa7f19612ba7ac7a3bbdc81a4976d22ee3">FEATURE_MONITOR</a> =  3 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa6ea3b8765b6e0b48c497b11b549cbe87">FEATURE_DS_CPL</a> =  4 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaee6e0823b2465aa22860826ea4928348">FEATURE_VMX</a> =  5 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaf47e50e44497495e78ab8aa6d984a891">FEATURE_EST</a> =  7 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa0f28278b2e0735c5010eb58d931c1a15">FEATURE_TM2</a> =  8 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa54a7cc41ede6ebe84e22ade875cd8a15">FEATURE_SSSE3</a> =  9 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa35de21f7d9af91c47306fb6e70b63fb5">FEATURE_CID</a> =  10 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfacfb0771a6b4ee5dc2bc711f1ed65ecdc">FEATURE_FMA</a> =  12 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfac3b1339a4aa5ca10745b76645ce562a3">FEATURE_CX16</a> =  13 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaba22b65dfc4b4de95ac567d1bbb63ade">FEATURE_xPTR</a> =  14 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfad1e9d2c05ca5a8d6658905d2a499988c">FEATURE_SSE41</a> =  19 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa7aab8048d48445fac72c91c9043fd585">FEATURE_SSE42</a> =  20 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa1662bc94967eb2ef26563d924470ab84">FEATURE_MOVBE</a> =  22 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfaf22c1dce018337d1853830f846bf1414">FEATURE_POPCNT</a> =  23 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa5044f9a2a6f9b95a4e5e724475994aef">FEATURE_AES</a> =  25 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa8f2f9f6b82912259f5529558a6012e27">FEATURE_XSAVE</a> =  26 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa86bdff587ea1dde7bc051583a0ecd676">FEATURE_OSXSAVE</a> =  27 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa65e4547334c4b278951ab97a9cae729a">FEATURE_AVX</a> =  28 + 32, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa0d48cda3fbb66d234aebcc58c463be62">FEATURE_SYSCALL</a> =  11 + 64, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa44af2aded967442c3fb4619a499e0c3d">FEATURE_XD_Bit</a> =  20 + 64, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa656d93a312eb2761c06e51685d2a1ca4">FEATURE_EM64T</a> =  29 + 64, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bfa31251ba8370daa5832bc1dd7cbbe9f9f">FEATURE_LAHF</a> =  0 + 96
<br/>
 }</td></tr>
<tr class="memitem:abde92db21512f07aaf05d073c43832df"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a> { <br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa39df034a5ced0be40065bcb55fb9f942">CACHE_SIZE_8_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa8002cfc04251e85a48cd4062ce78029d">CACHE_SIZE_16_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfaa18ec5dea3a3987e8d13ed4f7bbf972a">CACHE_SIZE_32_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa18362f194fca19849c7426fa30926f21">CACHE_SIZE_64_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfad9093f90f2acc46a44cb325580064b93">CACHE_SIZE_128_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa592f2022f18b346b1cb8f3bedd09d31e">CACHE_SIZE_256_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa593e599689231f45277e4d1a5511eec0">CACHE_SIZE_512_KB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa58dea49b51e5168e79577f232e328011">CACHE_SIZE_1_MB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa46ac784cfe39e0369ebfb5ece5c0dfb7">CACHE_SIZE_2_MB</a>, 
<br/>
&#160;&#160;<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832dfa33d137f8dcd660a19592fb6c76007d93">CACHE_SIZE_UNKNOWN</a>
<br/>
 }</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad2add9b8aab5b68cb2362a1f53428453"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ad2add9b8aab5b68cb2362a1f53428453">proc_get_cache_line_size</a> (void)</td></tr>
<tr class="memitem:af47ac510613aac4028d637fc365a6ace"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#af47ac510613aac4028d637fc365a6ace">proc_is_cache_aligned</a> (void *addr)</td></tr>
<tr class="memitem:ae5096c4199f9493f2148ec0aa9170f68"><td class="memItemLeft" align="right" valign="top">ptr_uint_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ae5096c4199f9493f2148ec0aa9170f68">proc_bump_to_end_of_cache_line</a> (ptr_uint_t sz)</td></tr>
<tr class="memitem:a7f1a1ed13dd1661167f1ead3136105d5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a7f1a1ed13dd1661167f1ead3136105d5">proc_get_containing_page</a> (void *addr)</td></tr>
<tr class="memitem:ab93fa51ec1100e6407ab6c0da21129ef"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ab93fa51ec1100e6407ab6c0da21129ef">proc_get_vendor</a> (void)</td></tr>
<tr class="memitem:a5a9d6c28ef304d6b4f5e1a45fb9da996"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a5a9d6c28ef304d6b4f5e1a45fb9da996">proc_set_vendor</a> (uint new_vendor)</td></tr>
<tr class="memitem:add381f471335fe8449382bb5cdedfb89"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family</a> (void)</td></tr>
<tr class="memitem:a8131332a495d7bd62cb5a0bd554baff6"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a8131332a495d7bd62cb5a0bd554baff6">proc_get_type</a> (void)</td></tr>
<tr class="memitem:a80efe6b358d534961c7023a276ccbf5d"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model</a> (void)</td></tr>
<tr class="memitem:aad97b0f87b4b48ec9f4fc685968b777a"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aad97b0f87b4b48ec9f4fc685968b777a">proc_get_stepping</a> (void)</td></tr>
<tr class="memitem:af1e2126b25bfe95d3803edf2418ff7fe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#af1e2126b25bfe95d3803edf2418ff7fe">proc_has_feature</a> (<a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bf">feature_bit_t</a> feature)</td></tr>
<tr class="memitem:abe2e2fa221708b3d7fd5f0e60e67e31a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structfeatures__t.html">features_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#abe2e2fa221708b3d7fd5f0e60e67e31a">proc_get_all_feature_bits</a> (void)</td></tr>
<tr class="memitem:a7f4d8f5467038218d6eb554a3ba85c46"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a7f4d8f5467038218d6eb554a3ba85c46">proc_get_brand_string</a> (void)</td></tr>
<tr class="memitem:ad3027106b06cd4d83c96a57c71a7f7e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ad3027106b06cd4d83c96a57c71a7f7e6">proc_get_L1_icache_size</a> (void)</td></tr>
<tr class="memitem:a46777763af21eeaa0c40973f16d643ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a46777763af21eeaa0c40973f16d643ad">proc_get_L1_dcache_size</a> (void)</td></tr>
<tr class="memitem:a0e8c4267978e43b7ad3813eb35876af5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a0e8c4267978e43b7ad3813eb35876af5">proc_get_L2_cache_size</a> (void)</td></tr>
<tr class="memitem:a0cd0671418a60a5c05146ab0790c4f12"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a0cd0671418a60a5c05146ab0790c4f12">proc_get_cache_size_str</a> (<a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a> size)</td></tr>
<tr class="memitem:a468a29572175ba1d3ca7dbeb1fdbb825"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a468a29572175ba1d3ca7dbeb1fdbb825">proc_fpstate_save_size</a> (void)</td></tr>
<tr class="memitem:a4a11c9d5d127ce126562ad35b4d165dd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a4a11c9d5d127ce126562ad35b4d165dd">proc_save_fpstate</a> (byte *buf)</td></tr>
<tr class="memitem:a23edceee5d1ae7c7d51a212432e6d644"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a23edceee5d1ae7c7d51a212432e6d644">proc_restore_fpstate</a> (byte *buf)</td></tr>
<tr class="memitem:a3039c377f1b296cd8be453957f95c103"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#a3039c377f1b296cd8be453957f95c103">proc_avx_enabled</a> (void)</td></tr>
<tr class="memitem:aac57f229cefee3abdc6a45dfa37557f6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#aac57f229cefee3abdc6a45dfa37557f6">dr_insert_save_fpstate</a> (void *drcontext, instrlist_t *ilist, <a class="el" href="structinstr__t.html">instr_t</a> *where, <a class="el" href="structopnd__t.html">opnd_t</a> buf)</td></tr>
<tr class="memitem:ae2f93e0bd2ccdd9e1fe15752198e6c57"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#ae2f93e0bd2ccdd9e1fe15752198e6c57">dr_insert_restore_fpstate</a> (void *drcontext, instrlist_t *ilist, <a class="el" href="structinstr__t.html">instr_t</a> *where, <a class="el" href="structopnd__t.html">opnd_t</a> buf)</td></tr>
<tr class="memitem:abf85cc821aab9850b8333eb32b953ca9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dr__proc_8h.html#abf85cc821aab9850b8333eb32b953ca9">dr_insert_get_seg_base</a> (void *drcontext, instrlist_t *ilist, <a class="el" href="structinstr__t.html">instr_t</a> *instr, reg_id_t seg, reg_id_t reg)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Utility routines for identifying features of the processor. </p>
</div><hr/><h2>Macro Definition Documentation</h2>
<a class="anchor" id="aa5917ba4e0fc4881e44bf0d44cc23dbd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_486&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: 486 </p>

</div>
</div>
<a class="anchor" id="a10f1211a030811027398bc93e8e9a77e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_ATHLON&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Athlon </p>

</div>
</div>
<a class="anchor" id="aac707afd85be036938e5d49d95c0eded"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_CORE&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Core </p>

</div>
</div>
<a class="anchor" id="a657416b67a07e7d5e27ccc34914e37d0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_CORE_2&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Core 2 </p>

</div>
</div>
<a class="anchor" id="adfa522a590963d43e9729915589fa9f7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_CORE_I7&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Core i7 </p>

</div>
</div>
<a class="anchor" id="a2eae48eda2929ebb84a08fc7da4f68df"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_ITANIUM&#160;&#160;&#160;7</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Itanium </p>

</div>
</div>
<a class="anchor" id="a3d1763e4006e8c90d1128f546328dc75"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_ITANIUM_2&#160;&#160;&#160;16</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Itanium 2 </p>

</div>
</div>
<a class="anchor" id="a447029fcb9cf7db5014c055d85a3ab36"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_ITANIUM_2_DC&#160;&#160;&#160;17</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Itanium 2 DC </p>

</div>
</div>
<a class="anchor" id="a407dceb30cc9b5caf2c66ecd10642db7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_IVYBRIDGE&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: IvyBridge </p>

</div>
</div>
<a class="anchor" id="af41fba064fdf6c7fb85d91aa707026f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_K5&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: K5 </p>

</div>
</div>
<a class="anchor" id="a83117177a9a1d41007c3efc9a9e9b1a5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_K6&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: K6 </p>

</div>
</div>
<a class="anchor" id="acb2899a123f67f129d5260aba56f37ed"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_K7&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: AMD K7 </p>

</div>
</div>
<a class="anchor" id="ae7083ecc492e2b0ed2a6dfb2cb6bf3e0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_K8&#160;&#160;&#160;15</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: AMD K8 </p>

</div>
</div>
<a class="anchor" id="a1c76ddb17f1e5fbeecd41600cfce0620"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_K8_MOBILE&#160;&#160;&#160;17</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: AMD K8 Mobile </p>

</div>
</div>
<a class="anchor" id="a620e197e51861c4cec393d6df24c756f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_K8L&#160;&#160;&#160;16</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: AMD K8L </p>

</div>
</div>
<a class="anchor" id="a8735c19bdcc36b570f3f88f02dbb0548"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_LLANO&#160;&#160;&#160;18</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: AMD Llano </p>

</div>
</div>
<a class="anchor" id="a2d11655bbdfcd1052170395c52eecc84"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_NEHALEM&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Nehalem </p>

</div>
</div>
<a class="anchor" id="a13b5374e4e39cbedcdd17fac6242a219"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_P4&#160;&#160;&#160;15</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: P4 family </p>

</div>
</div>
<a class="anchor" id="ac25b5877466323d4b3cd304524645539"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_P5&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: P5 family </p>

</div>
</div>
<a class="anchor" id="a120e883d78ae7c1ed378a4f9c6830f61"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_P6&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: P6 family </p>

</div>
</div>
<a class="anchor" id="ad9a459427d0589e528ef5165ecc6daee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_PENTIUM&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Pentium </p>

</div>
</div>
<a class="anchor" id="a24c7c233d6ac6b23f71718780e011625"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_PENTIUM_2&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Pentium 2 </p>

</div>
</div>
<a class="anchor" id="a238acd0c810b58ba86cbb846e55e38bf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_PENTIUM_3&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Pentium 3 </p>

</div>
</div>
<a class="anchor" id="a0219eb7076bd0c393c4a94507d94ba60"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_PENTIUM_4&#160;&#160;&#160;15</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Pentium 4 </p>

</div>
</div>
<a class="anchor" id="a819cb0fe5cc685a1569fbad23b6d7b3f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_PENTIUM_M&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Pentium M </p>

</div>
</div>
<a class="anchor" id="aeeab583026ff5b0c5f214487a723a3fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_PENTIUM_PRO&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: Pentium Pro </p>

</div>
</div>
<a class="anchor" id="aa73e3cf0134849d82f5cdcf8d1a63e91"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FAMILY_SANDYBRIDGE&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#add381f471335fe8449382bb5cdedfb89">proc_get_family()</a> processor family: SandyBridge </p>

</div>
</div>
<a class="anchor" id="abf6d19d093958dd07563e007b4a4459c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_ATOM&#160;&#160;&#160;28</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Atom </p>

</div>
</div>
<a class="anchor" id="a983414a4d0945b0b8a3978f91b243bbe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_ATOM_CEDARVIEW&#160;&#160;&#160;54</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Atom Cedarview </p>

</div>
</div>
<a class="anchor" id="affc7ed655dd90650f983b5e3aadb24e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_ATOM_LINCROFT&#160;&#160;&#160;38</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Atom Lincroft </p>

</div>
</div>
<a class="anchor" id="ab20d23ec99677bc5e7353a1b0333c18d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_CORE&#160;&#160;&#160;14</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Core Yonah </p>

</div>
</div>
<a class="anchor" id="a6a8b9f446b7cff50bc9ca28928bd5c65"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_CORE_2&#160;&#160;&#160;15</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Core 2 Merom/Conroe </p>

</div>
</div>
<a class="anchor" id="aa73b987b0cccc2a4a4572c5700acafae"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_CORE_PENRYN&#160;&#160;&#160;23</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Core 2 Penryn </p>

</div>
</div>
<a class="anchor" id="abe4d780c46eb13e2edd92bbe57c82001"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_I7_CLARKDALE&#160;&#160;&#160;37</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Westmere Clarkdale/Arrandale </p>

</div>
</div>
<a class="anchor" id="a3bd47d498a0c8f545e2ea387d623f6ef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_I7_CLARKSFIELD&#160;&#160;&#160;30</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Core i7 Clarksfield/Lynnfield </p>

</div>
</div>
<a class="anchor" id="a273b1b91b5b456da61ece3ed4b277fbc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_I7_GAINESTOWN&#160;&#160;&#160;26</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Core i7 Gainestown </p>

</div>
</div>
<a class="anchor" id="a7b360aad9b73cca85c0f6f37dbe0876b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_I7_HAVENDALE&#160;&#160;&#160;31</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Core i7 Havendale/Auburndale </p>

</div>
</div>
<a class="anchor" id="a378c0c39c6c588dfd5056148fb0b579e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_I7_WESTMERE&#160;&#160;&#160;44</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Westmere </p>

</div>
</div>
<a class="anchor" id="a163b71abbe416870d4fa02561e8dccec"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_I7_WESTMERE_EX&#160;&#160;&#160;47</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Nehalem Westmere Ex </p>

</div>
</div>
<a class="anchor" id="ab7516d657fcc533aa29127f613fecfe3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_IVYBRIDGE&#160;&#160;&#160;54</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Ivybridge </p>

</div>
</div>
<a class="anchor" id="a558147a77e0781b97100108a9376d279"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_PENTIUM_M&#160;&#160;&#160;13</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Pentium M 2MB L2 </p>

</div>
</div>
<a class="anchor" id="aba5cdb3609c3f91a8d0d148b3e3d02ce"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_PENTIUM_M_1MB&#160;&#160;&#160;9</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Pentium M 1MB L2 </p>

</div>
</div>
<a class="anchor" id="ab3ef5a3e21e33d88fce19694b61b899a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_SANDYBRIDGE&#160;&#160;&#160;42</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Sandybridge </p>

</div>
</div>
<a class="anchor" id="a6e5f23cc20fca8a28a11300b5dfd940e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MODEL_SANDYBRIDGE_E&#160;&#160;&#160;45</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="dr__proc_8h.html#a80efe6b358d534961c7023a276ccbf5d">proc_get_model()</a>: Sandybridge-E, -EN, -EP </p>

</div>
</div>
<a class="anchor" id="a7d467c1d283fdfa1f2081ba1e0d01b6e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PAGE_SIZE&#160;&#160;&#160;(4*1024)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of a page of memory. Convenience macro to align to the start of a page of memory. </p>

</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="a94798fdadfbf49a7c658ace669a1d310"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constants returned by <a class="el" href="dr__proc_8h.html#ab93fa51ec1100e6407ab6c0da21129ef">proc_get_vendor()</a>. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a94798fdadfbf49a7c658ace669a1d310a0ff85c91faaad5edc40b8b13bf5872a9"></a>VENDOR_INTEL</em>&nbsp;</td><td>
<p><a class="el" href="dr__proc_8h.html#ab93fa51ec1100e6407ab6c0da21129ef">proc_get_vendor()</a> processor identification: Intel </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a94798fdadfbf49a7c658ace669a1d310a98f56d8179428f9ae8a673281e490fb7"></a>VENDOR_AMD</em>&nbsp;</td><td>
<p><a class="el" href="dr__proc_8h.html#ab93fa51ec1100e6407ab6c0da21129ef">proc_get_vendor()</a> processor identification: AMD </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a94798fdadfbf49a7c658ace669a1d310a366adf423d8e0771406dc7be013f0fce"></a>VENDOR_UNKNOWN</em>&nbsp;</td><td>
<p><a class="el" href="dr__proc_8h.html#ab93fa51ec1100e6407ab6c0da21129ef">proc_get_vendor()</a> processor identification: unknown </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="abde92db21512f07aaf05d073c43832df"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>L1 and L2 cache sizes, used by <a class="el" href="dr__proc_8h.html#ad3027106b06cd4d83c96a57c71a7f7e6">proc_get_L1_icache_size()</a>, <a class="el" href="dr__proc_8h.html#a46777763af21eeaa0c40973f16d643ad">proc_get_L1_dcache_size()</a>, <a class="el" href="dr__proc_8h.html#a0e8c4267978e43b7ad3813eb35876af5">proc_get_L2_cache_size()</a>, and <a class="el" href="dr__proc_8h.html#a0cd0671418a60a5c05146ab0790c4f12">proc_get_cache_size_str()</a>. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa39df034a5ced0be40065bcb55fb9f942"></a>CACHE_SIZE_8_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 8 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa8002cfc04251e85a48cd4062ce78029d"></a>CACHE_SIZE_16_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 16 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfaa18ec5dea3a3987e8d13ed4f7bbf972a"></a>CACHE_SIZE_32_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 32 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa18362f194fca19849c7426fa30926f21"></a>CACHE_SIZE_64_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 64 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfad9093f90f2acc46a44cb325580064b93"></a>CACHE_SIZE_128_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 128 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa592f2022f18b346b1cb8f3bedd09d31e"></a>CACHE_SIZE_256_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 256 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa593e599689231f45277e4d1a5511eec0"></a>CACHE_SIZE_512_KB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 512 KB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa58dea49b51e5168e79577f232e328011"></a>CACHE_SIZE_1_MB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 1 MB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa46ac784cfe39e0369ebfb5ece5c0dfb7"></a>CACHE_SIZE_2_MB</em>&nbsp;</td><td>
<p>L1 or L2 cache size of 2 MB. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="abde92db21512f07aaf05d073c43832dfa33d137f8dcd660a19592fb6c76007d93"></a>CACHE_SIZE_UNKNOWN</em>&nbsp;</td><td>
<p>Unknown L1 or L2 cache size. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="a5e226019d68bd13050692da392f6c4bf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bf">feature_bit_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Feature bits returned by cpuid. Pass one of these values to <a class="el" href="dr__proc_8h.html#af1e2126b25bfe95d3803edf2418ff7fe">proc_has_feature()</a> to determine whether the underlying processor has the feature. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfac39f532dceb337cb996ebf5a8d658668"></a>FEATURE_FPU</em>&nbsp;</td><td>
<p>Floating-point unit on chip </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfac19ecc734bb3fb9988a70cfb9f8b5d23"></a>FEATURE_VME</em>&nbsp;</td><td>
<p>Virtual Mode Extension </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa5729b84040f331c80d595fff089eb024"></a>FEATURE_DE</em>&nbsp;</td><td>
<p>Debugging Extension </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaf73d7e68dd6037e26fe0f5fd678b37fd"></a>FEATURE_PSE</em>&nbsp;</td><td>
<p>Page Size Extension </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa41fba906745913a0024e0681147deaa3"></a>FEATURE_TSC</em>&nbsp;</td><td>
<p>Time-Stamp Counter </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaddf84fa80139cfd36bc55fb610f32be2"></a>FEATURE_MSR</em>&nbsp;</td><td>
<p>Model Specific Registers </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa71c63373c8ea6505295757cc7ecd5675"></a>FEATURE_PAE</em>&nbsp;</td><td>
<p>Physical Address Extension </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa38b9e9a2545459630c1a24aa942fbf93"></a>FEATURE_MCE</em>&nbsp;</td><td>
<p>Machine Check Exception </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa62c20d637a5c5c032191d4a508142b10"></a>FEATURE_CX8</em>&nbsp;</td><td>
<p>CMPXCHG8 Instruction Supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaa7037585fe64ec0dacbd6a0b23e36c83"></a>FEATURE_APIC</em>&nbsp;</td><td>
<p>On-chip APIC Hardware Supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa193e0263a550f30c4e1864fd56031010"></a>FEATURE_SEP</em>&nbsp;</td><td>
<p>Fast System Call </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa9434c675ef6c51a8c1518d21d073bb7d"></a>FEATURE_MTRR</em>&nbsp;</td><td>
<p>Memory Type Range Registers </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa60dec431fd3bb9e585ddbedcf0a2ea21"></a>FEATURE_PGE</em>&nbsp;</td><td>
<p>Page Global Enable </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfab6d8587790f9538e17f362d90d03c65b"></a>FEATURE_MCA</em>&nbsp;</td><td>
<p>Machine Check Architecture </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa8b10569c2597ca860fe892db8be62de9"></a>FEATURE_CMOV</em>&nbsp;</td><td>
<p>Conditional Move Instruction </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa7db7667cc1ffad4f032bde4dc899ee52"></a>FEATURE_PAT</em>&nbsp;</td><td>
<p>Page Attribute Table </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa616bf1ebc275f7604a4035200dc259d2"></a>FEATURE_PSE_36</em>&nbsp;</td><td>
<p>36-bit Page Size Extension </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa912609922b9b34a439cf77cb43333f9f"></a>FEATURE_PSN</em>&nbsp;</td><td>
<p>Processor serial # present &amp; enabled </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfae85e833da45f03369739700842e5e7cf"></a>FEATURE_CLFSH</em>&nbsp;</td><td>
<p>CLFLUSH Instruction supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa4337609223f777bd83beed05df7f1b81"></a>FEATURE_DS</em>&nbsp;</td><td>
<p>Debug Store </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa51bceffbc28d5786d54f4c62291c76d7"></a>FEATURE_ACPI</em>&nbsp;</td><td>
<p>Thermal monitor &amp; SCC supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa47e09e4f1dbd5ed01338dbe4e27b6ba4"></a>FEATURE_MMX</em>&nbsp;</td><td>
<p>MMX technology supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfadb15d4d526c0ebb7e0d7049592e960a6"></a>FEATURE_FXSR</em>&nbsp;</td><td>
<p>Fast FP save and restore </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa20b36d2b87f95af177c050b421127a4d"></a>FEATURE_SSE</em>&nbsp;</td><td>
<p>SSE Extensions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaf0e79e663a5a2e09109e3ac68ab13319"></a>FEATURE_SSE2</em>&nbsp;</td><td>
<p>SSE2 Extensions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa852f1d249e7df236d53f4f3038631cb3"></a>FEATURE_SS</em>&nbsp;</td><td>
<p>Self-snoop </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfadde01ed069072cf10e2eb9f3aa15244b"></a>FEATURE_HTT</em>&nbsp;</td><td>
<p>Hyper-threading Technology </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa08640c490e267b62a4c308332492340f"></a>FEATURE_TM</em>&nbsp;</td><td>
<p>Thermal Monitor supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa70edb5ca3595394d0ea5e7d31f7dfb96"></a>FEATURE_IA64</em>&nbsp;</td><td>
<p>IA64 Capabilities </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa8a378efbf47d8405fc3ea2d6b84d1946"></a>FEATURE_PBE</em>&nbsp;</td><td>
<p>Pending Break Enable </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa94c71e5f616000095f8d92d0dfbe6cb2"></a>FEATURE_SSE3</em>&nbsp;</td><td>
<p>SSE3 Extensions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfad9464528a260b289e46993186fc96063"></a>FEATURE_PCLMULQDQ</em>&nbsp;</td><td>
<p>OP_pclmulqdq supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa7f19612ba7ac7a3bbdc81a4976d22ee3"></a>FEATURE_MONITOR</em>&nbsp;</td><td>
<p>MONITOR/MWAIT instructions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa6ea3b8765b6e0b48c497b11b549cbe87"></a>FEATURE_DS_CPL</em>&nbsp;</td><td>
<p>CPL Qualified Debug Store </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaee6e0823b2465aa22860826ea4928348"></a>FEATURE_VMX</em>&nbsp;</td><td>
<p>Virtual Machine Extensions </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaf47e50e44497495e78ab8aa6d984a891"></a>FEATURE_EST</em>&nbsp;</td><td>
<p>Enhanced Speedstep Technology </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa0f28278b2e0735c5010eb58d931c1a15"></a>FEATURE_TM2</em>&nbsp;</td><td>
<p>Thermal Monitor 2 </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa54a7cc41ede6ebe84e22ade875cd8a15"></a>FEATURE_SSSE3</em>&nbsp;</td><td>
<p>SSSE3 Extensions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa35de21f7d9af91c47306fb6e70b63fb5"></a>FEATURE_CID</em>&nbsp;</td><td>
<p>Context ID </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfacfb0771a6b4ee5dc2bc711f1ed65ecdc"></a>FEATURE_FMA</em>&nbsp;</td><td>
<p>FMA instructions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfac3b1339a4aa5ca10745b76645ce562a3"></a>FEATURE_CX16</em>&nbsp;</td><td>
<p>CMPXCHG16B instruction supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaba22b65dfc4b4de95ac567d1bbb63ade"></a>FEATURE_xPTR</em>&nbsp;</td><td>
<p>Send Task Priority Messages </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfad1e9d2c05ca5a8d6658905d2a499988c"></a>FEATURE_SSE41</em>&nbsp;</td><td>
<p>SSE4.1 Extensions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa7aab8048d48445fac72c91c9043fd585"></a>FEATURE_SSE42</em>&nbsp;</td><td>
<p>SSE4.2 Extensions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa1662bc94967eb2ef26563d924470ab84"></a>FEATURE_MOVBE</em>&nbsp;</td><td>
<p>OP_movbe supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfaf22c1dce018337d1853830f846bf1414"></a>FEATURE_POPCNT</em>&nbsp;</td><td>
<p>OP_popcnt supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa5044f9a2a6f9b95a4e5e724475994aef"></a>FEATURE_AES</em>&nbsp;</td><td>
<p>AES instructions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa8f2f9f6b82912259f5529558a6012e27"></a>FEATURE_XSAVE</em>&nbsp;</td><td>
<p>OP_xsave* supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa86bdff587ea1dde7bc051583a0ecd676"></a>FEATURE_OSXSAVE</em>&nbsp;</td><td>
<p>OP_xgetbv supported in user mode </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa65e4547334c4b278951ab97a9cae729a"></a>FEATURE_AVX</em>&nbsp;</td><td>
<p>AVX instructions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa0d48cda3fbb66d234aebcc58c463be62"></a>FEATURE_SYSCALL</em>&nbsp;</td><td>
<p>SYSCALL/SYSRET instructions supported </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa44af2aded967442c3fb4619a499e0c3d"></a>FEATURE_XD_Bit</em>&nbsp;</td><td>
<p>Execution Disable bit </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa656d93a312eb2761c06e51685d2a1ca4"></a>FEATURE_EM64T</em>&nbsp;</td><td>
<p>Extended Memory 64 Technology </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a5e226019d68bd13050692da392f6c4bfa31251ba8370daa5832bc1dd7cbbe9f9f"></a>FEATURE_LAHF</em>&nbsp;</td><td>
<p>LAHF/SAHF available in 64-bit mode </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="abf85cc821aab9850b8333eb32b953ca9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool dr_insert_get_seg_base </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>drcontext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">instrlist_t *&#160;</td>
          <td class="paramname"><em>ilist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structinstr__t.html">instr_t</a> *&#160;</td>
          <td class="paramname"><em>instr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">reg_id_t&#160;</td>
          <td class="paramname"><em>seg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">reg_id_t&#160;</td>
          <td class="paramname"><em>reg</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Insert code to get the segment base address pointed to by seg into register reg. In Linux, it is only supported with -mangle_app_seg option. In Windows, it only supports getting base address of the TLS segment.</p>
<dl class="section return"><dt>Returns:</dt><dd>whether successful. </dd></dl>

</div>
</div>
<a class="anchor" id="ae2f93e0bd2ccdd9e1fe15752198e6c57"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dr_insert_restore_fpstate </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>drcontext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">instrlist_t *&#160;</td>
          <td class="paramname"><em>ilist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structinstr__t.html">instr_t</a> *&#160;</td>
          <td class="paramname"><em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structopnd__t.html">opnd_t</a>&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Inserts into <code>ilist</code> prior to <code>where</code> meta-instruction(s) to restore the floating point state from the 16-byte-aligned buffer referred to by buf, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing). <code>buf</code> should have size of OPSZ_512; this routine will automatically adjust it to OPSZ_108 if necessary. </p>
<dl class="section note"><dt>Note:</dt><dd><a class="el" href="dr__proc_8h.html#a468a29572175ba1d3ca7dbeb1fdbb825">proc_fpstate_save_size()</a> can be used to determine the particular size needed.</dd></dl>
<p>When the FXSR feature is present, the fxsave format matches the bitwidth of the x86 mode of the current thread (see <a class="el" href="dr__ir__utils_8h.html#aa18c8ca0720c97403a0fa9371ae792e5">get_x86_mode()</a>). </p>

</div>
</div>
<a class="anchor" id="aac57f229cefee3abdc6a45dfa37557f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dr_insert_save_fpstate </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>drcontext</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">instrlist_t *&#160;</td>
          <td class="paramname"><em>ilist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structinstr__t.html">instr_t</a> *&#160;</td>
          <td class="paramname"><em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structopnd__t.html">opnd_t</a>&#160;</td>
          <td class="paramname"><em>buf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Inserts into <code>ilist</code> prior to <code>where</code> meta-instruction(s) to save the floating point state into the 16-byte-aligned buffer referred to by <code>buf</code>, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing). <code>buf</code> should have size of OPSZ_512; this routine will automatically adjust it to OPSZ_108 if necessary. </p>
<dl class="section note"><dt>Note:</dt><dd><a class="el" href="dr__proc_8h.html#a468a29572175ba1d3ca7dbeb1fdbb825">proc_fpstate_save_size()</a> can be used to determine the particular size needed.</dd></dl>
<p>When the FXSR feature is present, the fxsave format matches the bitwidth of the x86 mode of the current thread (see <a class="el" href="dr__ir__utils_8h.html#aa18c8ca0720c97403a0fa9371ae792e5">get_x86_mode()</a>).</p>
<p>The last floating-point instruction address is left in an untranslated state (i.e., it may point into the code cache). </p>

</div>
</div>
<a class="anchor" id="a3039c377f1b296cd8be453957f95c103"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool proc_avx_enabled </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns whether AVX is enabled by both the processor and the operating system. Even if the processor supports AVX, if the operating system does not enable AVX state saving, then AVX instructions will fault. </p>

</div>
</div>
<a class="anchor" id="ae5096c4199f9493f2148ec0aa9170f68"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ptr_uint_t proc_bump_to_end_of_cache_line </td>
          <td>(</td>
          <td class="paramtype">ptr_uint_t&#160;</td>
          <td class="paramname"><em>sz</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns n &gt;= <code>sz</code> such that n is a multiple of the cache line size. </p>

</div>
</div>
<a class="anchor" id="a468a29572175ba1d3ca7dbeb1fdbb825"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t proc_fpstate_save_size </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the size in bytes needed for a buffer for saving the floating point state. </p>

</div>
</div>
<a class="anchor" id="abe2e2fa221708b3d7fd5f0e60e67e31a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structfeatures__t.html">features_t</a>* proc_get_all_feature_bits </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns all 4 32-bit feature values. Use proc_has_feature to test for specific features. </p>

</div>
</div>
<a class="anchor" id="a7f4d8f5467038218d6eb554a3ba85c46"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* proc_get_brand_string </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the processor brand string as given by the cpuid instruction. </p>

</div>
</div>
<a class="anchor" id="ad2add9b8aab5b68cb2362a1f53428453"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t proc_get_cache_line_size </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the cache line size in bytes of the processor. </p>

</div>
</div>
<a class="anchor" id="a0cd0671418a60a5c05146ab0790c4f12"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* proc_get_cache_size_str </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a>&#160;</td>
          <td class="paramname"><em>size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Converts a cache_size_t type to a string. </p>

</div>
</div>
<a class="anchor" id="a7f1a1ed13dd1661167f1ead3136105d5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* proc_get_containing_page </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>addr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns n &lt;= <code>addr</code> such that n is a multiple of the page size. </p>

</div>
</div>
<a class="anchor" id="add381f471335fe8449382bb5cdedfb89"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint proc_get_family </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the processor family as given by the cpuid instruction, adjusted by the extended family as described in the Intel documentation. The FAMILY_ constants identify important family values. </p>

</div>
</div>
<a class="anchor" id="a46777763af21eeaa0c40973f16d643ad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a> proc_get_L1_dcache_size </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the size of the L1 data cache. </p>

</div>
</div>
<a class="anchor" id="ad3027106b06cd4d83c96a57c71a7f7e6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a> proc_get_L1_icache_size </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the size of the L1 instruction cache. </p>

</div>
</div>
<a class="anchor" id="a0e8c4267978e43b7ad3813eb35876af5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="dr__proc_8h.html#abde92db21512f07aaf05d073c43832df">cache_size_t</a> proc_get_L2_cache_size </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the size of the L2 cache. </p>

</div>
</div>
<a class="anchor" id="a80efe6b358d534961c7023a276ccbf5d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint proc_get_model </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the processor model as given by the cpuid instruction, adjusted by the extended model as described in the Intel documentation. The MODEL_ constants identify important model values. </p>

</div>
</div>
<a class="anchor" id="aad97b0f87b4b48ec9f4fc685968b777a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint proc_get_stepping </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the processor stepping ID. </p>

</div>
</div>
<a class="anchor" id="a8131332a495d7bd62cb5a0bd554baff6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint proc_get_type </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the processor type as given by the cpuid instruction. </p>

</div>
</div>
<a class="anchor" id="ab93fa51ec1100e6407ab6c0da21129ef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint proc_get_vendor </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns one of the VENDOR_ constants. </p>

</div>
</div>
<a class="anchor" id="af1e2126b25bfe95d3803edf2418ff7fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool proc_has_feature </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="dr__proc_8h.html#a5e226019d68bd13050692da392f6c4bf">feature_bit_t</a>&#160;</td>
          <td class="paramname"><em>feature</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Tests if processor has selected feature. </p>

</div>
</div>
<a class="anchor" id="af47ac510613aac4028d637fc365a6ace"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool proc_is_cache_aligned </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>addr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns true only if <code>addr</code> is cache-line-aligned. </p>

</div>
</div>
<a class="anchor" id="a23edceee5d1ae7c7d51a212432e6d644"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void proc_restore_fpstate </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>buf</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Restores the floating point state from the 16-byte-aligned buffer <code>buf</code>, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing). </p>
<dl class="section note"><dt>Note:</dt><dd><a class="el" href="dr__proc_8h.html#a468a29572175ba1d3ca7dbeb1fdbb825">proc_fpstate_save_size()</a> can be used to determine the particular size needed.</dd></dl>
<p>When the FXSR feature is present, the fxsave format matches the bitwidth of the x86 mode of the current thread (see <a class="el" href="dr__ir__utils_8h.html#aa18c8ca0720c97403a0fa9371ae792e5">get_x86_mode()</a>). </p>

</div>
</div>
<a class="anchor" id="a4a11c9d5d127ce126562ad35b4d165dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t proc_save_fpstate </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>buf</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Saves the floating point state into the 16-byte-aligned buffer <code>buf</code>, which must be 512 bytes for processors with the FXSR feature, and 108 bytes for those without (where this routine does not support 16-bit operand sizing). </p>
<dl class="section note"><dt>Note:</dt><dd><a class="el" href="dr__proc_8h.html#a468a29572175ba1d3ca7dbeb1fdbb825">proc_fpstate_save_size()</a> can be used to determine the particular size needed.</dd></dl>
<p>When the FXSR feature is present, the fxsave format matches the bitwidth of the x86 mode of the current thread (see <a class="el" href="dr__ir__utils_8h.html#aa18c8ca0720c97403a0fa9371ae792e5">get_x86_mode()</a>).</p>
<p>The last floating-point instruction address is left in an untranslated state (i.e., it may point into the code cache).</p>
<p>DR does NOT save the application's floating-point, MMX, or SSE state on context switches! Thus if a client performs any floating-point operations in its main routines called by DR, the client must save and restore the floating-point/MMX/SSE state. If the client needs to do so inside the code cache the client should implement that itself. Returns number of bytes written. </p>

</div>
</div>
<a class="anchor" id="a5a9d6c28ef304d6b4f5e1a45fb9da996"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int proc_set_vendor </td>
          <td>(</td>
          <td class="paramtype">uint&#160;</td>
          <td class="paramname"><em>new_vendor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the vendor to the given VENDOR_ constant. This function is supplied to support decoding or encoding with respect to other than the current processor being executed on. The change in vendor will be seen by the decoder and encoder, as well as the rest of the system. </p>
<dl class="section return"><dt>Returns:</dt><dd>the prior vendor, or -1 on an invalid argument. </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_3f960cec7fb648840e8ab2c814e874ae.html">include</a></li><li class="navelem"><a class="el" href="dr__proc_8h.html">dr_proc.h</a></li>
    <li class="footer" style="float:none;text-align:center"><img border=0 src="favicon.png"> &nbsp;  DynamoRIO API version 5.0.0 --- Wed Sep 10 2014 21:36:44 &nbsp; <img border=0 src="favicon.png">
</small></address>
<!--END !GENERATE_TREEVIEW-->
</body>
</html>
